home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 October
/
EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso
/
Aminet
/
comm
/
xeno
/
bbbbscd.lha
/
BBBBScd
/
System
/
s
/
bbsExtDL.cache
< prev
next >
Wrap
Text File
|
1995-03-18
|
22KB
|
846 lines
/* Based on: bbsExtDL.cache 8.2 (17.10.94) copyright 1992-94 Richard Stockton
FREELY DISTRIBUTABLE
****************************************************************************
CONVERTED FOR XENOLINK PRO BBS. $VERS:1.0 (18.03.95) by Derek Scott,2:259/75
****************************************************************************
Allows Xenolink sysop to cache a whole CD volume (or assign) from the shell,
for use with BBBBScd Xeno door.
Just ignores file or directory names that contain spaces because Xenolink
would be unable to download them anyway. (But handles recursive files &
directories OK, archived by LZX by use of 'SELECT ALL' parameter)
Ignores icons (files that end in .info).
A textfile CD_Exclude , controls exclusion of drawers on certain CDs that
contain copyright files. Other specific files or directories can be excluded
by adding their paths to the CD_Exclude textfile, one path per line.
*/
OPTIONS RESULTS /*sets internal default to request RESULTS string from host*/
FF='0C'x /* defines hex-decimal value for FORM FEED (clear screen)*/
CR='0D'x /* defines hex-decimal value for CARRIAGE RETURN*/
SIGNAL ON BREAK_C
SIGNAL ON BREAK_E
SIGNAL ON ERROR
PARSE ARG volume wannasee askcache
IF volume='' THEN EXIT
IF wannasee~='' THEN wannasee=UPPER(LEFT(wannasee,1))
IF askcache~='' THEN askcache=UPPER(LEFT(askcache,1))
cfgfile='xconfig:BBBBScd.config'
/* Open the support library if it is not already open. (yawn...)*/
if ~show('L',"rexxsupport.library") THEN
DO
addlib('rexxsupport.library',0,-30,0)
END
if ~show('L',"rexxmathlib.library") THEN
DO
addlib('rexxmathlib.library',0,-30,0)
END
SAY ' '
if ~show('L',"rexxarplib.library") THEN
DO
addlib('rexxarplib.library',0,-30,0)
END
IF ~SHOW('P','QuickSortPort') THEN
DO
/* Add the QuickSort port, so we can use QSORT.
* First check if the port is already up. If not, run QuickSort
* and wait for the port to be there */
if ~showlist('p','QuickSortPort') then
do
ADDRESS COMMAND "run quicksort >NIL:"
do i = 1 to 10
if ~showlist('p','QuickSortPort') then call delay 20
else leave i
end
if showlist('p','QuickSortPort') then call addlib('QuickSortPort',-30)
end
end
IF ~SHOW('P','QuickSortPort') THEN EXIT 666
/* read the configuration parameters from XCONFIG:BBBBScd.CFG */
x=OPEN(f,cfgfile,'R')
IF x~=0 THEN
DO
bbspath=READLN(f)
devlist=READLN(f)
sysoplevel=VALUE(WORD(READLN(f),1))
junk=READLN(f)
junk=READLN(f)
xrecursive_size=VALUE(WORD(READLN(f),1))
junk=READLN(f)
lzxflag=READLN(f)
CALL CLOSE(f)
END
ELSE
/* can't open config file, so use defaults... :) */
DO
bbspath='doors:bbbbsCD/'
devlist='CD0: CD1: CD2: CD50: CD51: CD52: CD53: CD54: CD55: CD56:'
sysoplevel=224
lzxflag='N'
END
/***************************************************************************/
/* set additional parameters about user, passed by Xenolink node */
level=255
maxtime=10000
linesperpage=24
menuset=1
nodex=0
namex='SYSOP'
name='SYSOP'
colorflag=1
node=nodex
/* Call Newline to List all Dirs on device */
sizefile='RAM:bbsCDsize'nodex
SAY 'Collecting dirs on 'volume' ... please be patient! ;)'
ADDRESS COMMAND 'c:nl >'sizefile' 'volume' -Z -W -F'
ADDRESS COMMAND 'c:WAIT 5'
okflag=0
fsize=0
DO zloop=1
zz=OPEN(f10,sizefile,'r')
IF zz~=0 THEN LEAVE zloop
DO
SAY 'Still waiting for list of directories...'
ADDRESS COMMAND 'c:WAIT 5'
ITERATE zloop
END
END
zzrecflag=0
zzpos=0
zzcount=0
zzpath=''
exclude=''
x=OPEN(f,bbspath'CD_Exclude','R')
IF x~=0 THEN exclude=READCH(f,65000)
CALL CLOSE(f)
exclude=UPPER(TRANSLATE(exclude,' ','0A'x))
lists.=''
lists.0=0
maxtime=maxtime-30
CALL TIME('R')
CR='0D'x
def=''
pen3='
'
IF colorflag<1 THEN
DO
def=''
pen3=''
END
ELSE colorflag=1
saytxt=FF
SAY saytxt
selected=''
path=''
templist=devlist
devlist=''
longest=0
CALL PRAGMA('W','N') /* disk requesters OFF */
CALL PRAGMA('D',bbspath'Information')
test3=PRAGMA('D')
DO i=1 TO WORDS(templist)
test=WORD(templist,i)
IF ~EXISTS(test) THEN ITERATE i
IF SHOWLIST('A',UPPER(LEFT(test,LENGTH(test)-1))) THEN test2=test
ELSE
DO
CALL PRAGMA('D',test)
test2=PRAGMA('D')
/************************************************************/
/* DAS - Fool System into thinking Assigns are REAL Devices */
IF test2='d::' THEN test2='Pro_CD1:'
/* DAS */
/************************************************************/
IF test2=test3 THEN ITERATE i
IF WORDS(test2)>1 THEN test2=test
END
devlist=STRIP(devlist test2)
IF LENGTH(test2)>longest THEN longest=LENGTH(test2)
END
cols=76%(longest+8)
IF devlist='' THEN
DO
SAY
saytxt='*** Sorry, no External Devices are available! ***'CR
SAY saytxt
SAY
OPTIONS PROMPT 'Press RETURN'
PULL junk
EXIT('')
END
picklist=devlist
IF WORDS(picklist)=1 THEN
DO
path=picklist
IF RIGHT(path,1)~=':' THEN path=path'/'
picklist=makepicklist()
END
ELSE
DO
lists.0=1
dirs=WORDS(devlist)
END
OPTIONS PROMPT 'Press RETURN'
PULL junk
DO loop=1
test=TIME('E')
IF test>(maxtime-100) THEN
DO
SAY
IF test>maxtime THEN
DO
saytxt='*** This session''s time is expiring! ***'CR
SAY saytxt
SAY
LEAVE loop
END
ELSE SAY '*** Less than 2 minutes remaining! ***'
SAY CR
END
filename=pick(picklist)
IF filename='' THEN
DO
temp=path
IF RIGHT(temp,1)='/' THEN temp=LEFT(temp,LENGTH(temp)-1)
IF FIND(UPPER(devlist),UPPER(temp))>0 THEN
DO
IF WORDS(devlist)=1 THEN ITERATE loop
picklist=devlist
path=''
ITERATE loop
END
ELSE
DO
test=RIGHT(path,1)
IF test='/' THEN path=LEFT(path,LENGTH(path)-1)
slash=LASTPOS('/',path)
IF slash=0 THEN slash=LASTPOS(':',path)
path=LEFT(path,slash)
END
END
IF filename=':-)' THEN ITERATE loop
tempath=path||filename
temp=WORD(STATEF(tempath),1)
IF temp='FILE' THEN
DO
IF FIND(UPPER(selected),UPPER(tempath))=0 THEN
selected=selected tempath
ELSE selected=DELWORD(selected,FIND(UPPER(selected),UPPER(tempath)),1)
shosel=''
ITERATE loop
END
ELSE IF temp='DIR' THEN
DO
path=tempath
test=RIGHT(path,1)
IF test~='' & test~='/' & test~=':' THEN path=path'/'
END
ELSE IF UPPER(filename)='DONE' THEN LEAVE loop
IF path~='' THEN picklist=makepicklist()
END
selected=STRIP(selected)
test=''
CALL CLOSE(f10)
SAY 'Returning to the BBS...'
SAY
EXIT
makepicklist:
IF path='' THEN RETURN ''
IF STORAGE()<100000 THEN
DO
lists.=''
lists.0=0
IF WORDS(devlist)>1 THEN
DO
lists.0=1
lists.1.0=devlist
END
END
DO i=1 TO lists.0
IF path=lists.i THEN RETURN lists.i.0
END
cname=STRIP(RIGHT(COMPRESS(path,' ._-:/'),29))
IF cname~='' & EXISTS(bbspath'Cache/'cname) THEN
DO cloop=1 TO 1
k=lists.0+1
lists.0=k
x=OPEN(f,bbspath'Cache/'cname'.','R')
IF x=0 THEN SAY bbspath'Cache/'cname'. failed to open!'
ELSE
DO
cpath=READLN(f)
IF cpath=path THEN lists.k=path
ELSE
DO
IF level>sysoplevel THEN
SAY path 'does not match cache path in' cname'. !'
CALL CLOSE(f)
lists.0=lists.0-1
LEAVE cloop
END
DO i=1
line=READLN(f)
IF EOF(f) THEN LEAVE i
IF colorflag~=1 THEN
DO
n=POS('1B'x,line)
DO WHILE n>0
DO m=2
IF DATATYPE(SUBSTR(line,n+m,1),'M') | (n+m+1)>LENGTH(line) THEN
leave m
END
line=DELSTR(line,n,m+1)
n=POS('1B'x,line)
END
END
lists.k.i=line
END
CALL CLOSE(f)
lists.k.ROWS=i-1
END
x=OPEN(f,bbspath'Cache/'cname,'R')
IF x=0 THEN
DO
SAY bbspath'Cache/cname failed to open!'CR
CALL CLOSE(f)
lists.0=lists.0-1
LEAVE cloop
END
ELSE
DO
plist=READCH(f,65000)
CALL CLOSE(f)
lists.k.0=plist
RETURN plist
END
END
SAY 'Loading...'CR
CALL FileList(path'*',filelist,'F','N')
IF filelist.0>1 THEN CALL QSORT(1,filelist.0,filelist)
CALL FileList(path'*',dirlist,'D','N')
IF dirlist.0>1 THEN CALL QSORT(1,dirlist.0,dirlist)
plist=''
dirs=0
longest=0
DO i=1 TO filelist.0
IF WORDS(filelist.i)~=1 THEN ITERATE i
IF filelist.i='' THEN ITERATE i
IF UPPER(RIGHT(filelist.i,5))='.INFO' THEN ITERATE i
IF FIND(exclude,UPPER(path||filelist.i))>0 THEN ITERATE i
plist=STRIP(plist filelist.i)
IF LENGTH(filelist.i)>longest THEN longest=LENGTH(filelist.i)
END
DO i=1 TO dirlist.0
IF WORDS(dirlist.i)~=1 THEN ITERATE i
IF FIND(exclude,UPPER(path||dirlist.i))>0 THEN ITERATE i
plist=STRIP(plist dirlist.i)
IF LENGTH(dirlist.i)>longest THEN longest=LENGTH(dirlist.i)
dirs=dirs+1
END
cols=76%(longest+9)
lists.0=lists.0+1
i=lists.0
lists.i=path
lists.i.0=plist
DROP filelist. dirlist.
RETURN plist
pick:
PARSE ARG list
selection=''
DO k=1 TO lists.0
IF path=lists.k THEN LEAVE k
END
IF ~DATATYPE(lists.k.ROWS,'N') THEN
DO
items=WORDS(list)
IF items<75 & dirs<25 THEN SAY 'Formatting' items 'items...'
ELSE SAY 'Please be patient, formatting' items 'items may take a while the first time...'
lists.k.ROWS=(items%cols)+((items//cols)>0)
IF cols>items THEN cols=items
IF cols<1 THEN cols=1
longest=(76%cols)-8
lists.k=path
DO j=0 TO cols-1
DO i=1 TO lists.k.ROWS
thisnum=j*lists.k.ROWS+i
IF thisnum<=items THEN
DO
thisitem=WORD(list,thisnum)
filestat=STATEF(path||thisitem)
thisitem=LEFT(thisitem,longest)' '
IF WORD(filestat,1)='DIR' THEN
lists.k.i=lists.k.i||pen3'(dir) 'thisitem||def
ELSE
DO
bytes=WORD(filestat,2)
IF bytes<10000 THEN
lists.k.i=lists.k.i||RIGHT(bytes,5) thisitem
ELSE IF bytes>1023999 THEN
lists.k.i=lists.k.i||RIGHT(bytes%1024000,4)'m' thisitem
ELSE lists.k.i=lists.k.i||RIGHT(bytes%1024,4)'k' thisitem
END
END
END
END
IF level>sysoplevel & items>24 THEN
DO
SAY items 'items,' dirs 'dirs,' lists.k.ROWS 'rows'
IF askcache='Y' THEN
DO
OPTIONS PROMPT 'FileCache' path'? (Ny) > '
PULL junk
END
ELSE junk='Y'
junk=UPPER(LEFT(junk,1))
IF junk='Y' THEN
DO
CALL MAKEDIR(bbspath'Cache')
cname=STRIP(RIGHT(COMPRESS(path,' ._-:/'),29))
x=OPEN(f,bbspath'Cache/'cname,'W')
IF x=0 THEN SAY 'Unable to open cache file' cname'!'
ELSE
DO
CALL WRITECH(f,list)
CALL CLOSE(f)
END
x=OPEN(f,bbspath'Cache/'cname'.','W')
IF x=0 THEN
DO
SAY 'Unable to open cache file' cname'. !'CR
CALL DELETE(bbspath'Cache/'cname)
END
ELSE
DO
CALL WRITELN(f,path)
DO i=1 TO lists.k.ROWS
CALL WRITELN(f,TRIM(lists.k.i))
END
CALL CLOSE(f)
SAY path 'has been cached.'
END
END
END
END
IF selected~='' THEN
DO
SAY
w=WORDS(selected)
temp=pen3' 'w def'selected files.'
IF shosel~=1 THEN
DO
saytxt=pen3'selected:'def||CR
SAY saytxt
DO i=1 TO w
saytxt=WORD(selected,i)||CR
SAY saytxt
END
END
ELSE
DO
temp='Enter' pen3'SHOW S'def'elected to display'temp
SAY temp||CR
END
IF w>5 THEN shosel=1
END
/* SAY CR */
saytxt='current path ='pen3 path||def||CR
SAY saytxt
IF wannasee='Y' THEN
DO
saytxt=LEFT('-',75,'-')||CR
SAY saytxt
END
DO i=1 TO lists.k.ROWS
saytxt=TRIM(lists.k.i)||CR
IF wannasee='Y' THEN SAY saytxt
IF (i+2)//(linesperpage-1)=0 & nonstop~=1 THEN
DO
CALL whodat()
/* OPTIONS PROMPT ' - ['pen3'N'def']on-stop ['pen3'Q'def']uit ['pen3'RETURN'def']=Continue - ' */
junk='N'
IF LEFT(UPPER(junk),1)='Q' THEN LEAVE i
IF LEFT(UPPER(junk),1)='N' THEN nonstop=1
END
END
nonstop=0
IF wannasee='Y' THEN
DO
saytxt=LEFT('-',75,'-')||CR
SAY saytxt
END
CALL whodat()
readflag=0
/* Simulate sysop typing all paths recursively! DAS2 */
DO getloop=1
pstring=showtime()' Enter ''?'' for HELP > '
selection=''
IF zzrecflag~=0 & zzpos=0 & zzcount<100 THEN
DO /* try to get back to device list prompt, ready for next dir */
zzcount=zzcount+1
END
IF zzrecflag~=0 & zzcount~<100 THEN
DO zz3=1 to 1 /* check for end of current dir path & request new record */
zzstart=zzpos+1
If zzstart>LENGTH(zzpath) THEN
DO
zzrecflag=0
LEAVE zz3
END
zzpath2=''
DO zz4=zzstart to LENGTH(zzpath) /* find next 'dir' in current path */
zzchar=LEFT(zzpath,zz4)
zzchar=RIGHT(zzchar,1)
IF zzchar=':' THEN
DO
zzpos=zz4
LEAVE zz4
END
IF zzchar='/' THEN
DO
zzpos=zz4
LEAVE zz4
END
zzpath2=zzpath2''zzchar
END
selection=zzpath2
/* SAY 'split:'zzpath2 */
END
IF zzrecflag=0 THEN
DO /* get next dir name from newlist dirlist file */
DO zz2=1
line = READLN(f10)
IF EOF(f10) THEN
DO
say 'End Of Dirlist File encountered'
selection='DONE'
LEAVE zz2
END
IF line='' THEN ITERATE zz2
IF UPPER(WORD(line,1))="DIRECTORY" THEN
DO
zzpath=WORD(line,3)
zzpath=LEFT(zzpath,LENGTH(zzpath)-1)
zzpath=RIGHT(zzpath,LENGTH(zzpath)-1)
zzrecflag=1
zzpos=0
zzcount=0
IF RIGHT(zzpath,1)~=':' THEN zzpath=zzpath'/'
saytxt=LEFT('-',75,'-')||CR
SAY saytxt
SAY 'Entering new Path: 'zzpath
LEAVE zz2
END
END
END
/* ELSE
DO
OPTIONS PROMPT pstring
PARSE PULL selection
END */
/* PARSE selection */
IF selection='?' THEN
DO
CALL help()
OPTIONS PROMPT 'Press RETURN'
PULL junk
selection=';-)'
LEAVE getloop
END
IF LEFT(selection,1)='/' THEN selection=STRIP(SUBSTR(selection,2))
IF WORDS(selection)>1 THEN
DO
IF LEFT(UPPER(selection),6)='SHOW S' THEN
DO
shosel=''
selection=';-)'
LEAVE getloop
END
IF UPPER(selection)='SELECT ALL' THEN
DO
IF path='' | RIGHT(path,1)=':' | POS(UPPER(path),UPPER(devlist))>0 THEN
DO
SAY
saytxt=pen3'*** Archiving entire devices at one time is NOT allowed! ***'def||CR
SAY saytxt
SAY
ITERATE getloop
END
CALL selall(path xrecursive_size)
shosel=''
selection=':-)'
LEAVE getloop
END
ELSE IF UPPER(WORD(selection,1))='READ' THEN
DO
readflag=1
selection=STRIP(DELWORD(selection,1,1))
END
ELSE IF UPPER(WORD(selection,1))='CD' THEN selection=SUBSTR(selection,4)
ELSE IF UPPER(WORD(selection,1))='DIR' THEN selection=SUBSTR(selection,5)
END
i=FIND('DONE' UPPER(list),UPPER(selection))
IF i=0 THEN
DO
i=FIND('DONE' UPPER(list),UPPER(selection':'))
IF i=0 THEN
DO
IF UPPER(selection)='KINGFISHER' THEN
DO
IF EXISTS('rexx:KingFisher.rexx') THEN
CALL KingFisher.rexx(name '. .' colorflag maxtime)
ELSE IF EXISTS(bbspath'rexxDoors/KingFisher.rexx') THEN
DO
curdir=PRAGMA('D',bbspath'rexxDoors')
CALL KingFisher.rexx(name '. .' colorflag maxtime)
curdir=PRAGMA('D',curdir)
END
ELSE SAY 'KingFisher.rexx not found!'
ITERATE getloop
END
ELSE IF UPPER(selection)='Q' THEN selection='DONE'
ELSE ITERATE getloop
END
ELSE selection=selection':'
END
IF selection='' & path='' THEN ITERATE getloop
ELSE IF i>1 THEN selection=WORD(list,i-1)
IF readflag=1 THEN
DO
endtest=UPPER(RIGHT(selection,4))
IF FIND('.ARC .DMS .LZH .LHA .ZIP .ZOO',endtest)>0 THEN
DO
CALL Contents.rexx(path||selection)
IF EXISTS('RAM:CONTENTS') THEN CALL showtext('RAM: CONTENTS')
END
ELSE CALL showtext(path selection)
readflag=0
selection=';-)'
END
LEAVE getloop
END
RETURN selection
selall: PROCEDURE EXPOSE selected pen3 def CR
PARSE ARG dir xrecursive_size .
IF FIND(exclude,UPPER(dir))>0 THEN RETURN
saytxt='Sizing'pen3 dir||def||CR
SAY saytxt
IF RIGHT(dir,1)~='/' THEN dir=dir'/'
/* DAS */
sizefile='RAM:bbsCDsize'nodex
ADDRESS COMMAND 'c:nl >'sizefile' 'dir' -Z -W -F'
ADDRESS COMMAND 'c:WAIT 5'
okflag=0
fsize=0
DO zloop=1 TO 10
zz=OPEN(f10,sizefile,'r')
IF zz=0 THEN
DO
SAY 'Waiting for Sizefile...'
ADDRESS COMMAND 'c:WAIT 5'
ITERATE zloop
END
ELSE
DO
okflag=1
LEAVE zloop
END
END
IF okflag~=1 THEN
DO
SAY 'Sorry, too many files... SELECT ALL cancelled!'
ADDRESS COMMAND 'C:WAIT 2'
RETURN
END
zzsizetot=0
zzfiletot=0
zzdirtot=0
zzpath=''
DO zz2=1
line = READLN(f10)
IF EOF(f10) THEN LEAVE zz2
IF line='' THEN ITERATE
IF UPPER(WORD(line,2))='FILES' THEN
DO
IF UPPER(WORD(line,1))='NO' THEN iterate zz2
SAY RIGHT(zzpath,32)', 'VALUE(WORD(line,1))' file(s), 'VALUE(WORD(line,13))' bytes'
zzsizetot=zzsizetot+VALUE(WORD(line,13))
zzfiletot=zzfiletot+VALUE(WORD(line,1))
zzdirtot=zzdirtot+1
END
ELSE IF UPPER(WORD(line,1))="DIRECTORY" THEN zzpath=WORD(line,3)
END
CALL CLOSE(f10)
saytxt=pen3'Total:'def' 'zzdirtot''pen3' dir(s), 'def''zzfiletot''pen3' file(s), 'def''zzsizetot''pen3' bytes'||def||CR
SAY saytxt
IF zzsizetot>xrecursive_size THEN
DO
saytxt=pen3'*CANCELLED*'def' the maximum bytes allowed per 'pen3'SELECT ALL'def' is: 'pen3''xrecursive_size' bytes!!!'||def||CR
SAY saytxt
END
IF zzsizetot~>xrecursive_size THEN selected=selected' 'dir'*'
ADDRESS COMMAND 'C:WAIT 4'
RETURN
showtext:
PARSE ARG tpath' 'textfile
test=RIGHT(tpath,1)
IF test~='' & test~=':' & test~='/' THEN tpath=tpath'/'
x=OPEN(f,STRIP(tpath||textfile),'R')
IF x=0 THEN RETURN
test=READCH(f,64)
mask=XRANGE(,'06'x)||XRANGE('0E'x,'1A'x)||XRANGE('1C'x,'1F'x)
IF VERIFY(test,mask,'M')>0 THEN
DO
CALL CLOSE(f)
testloc=VERIFY(test,mask,'M')
saytxt='*** not an archive or a text file! ***'CR
SAY saytxt
saytxt='Character number' testloc 'is ASCII' C2D(SUBSTR(test,testloc,1))||CR
SAY saytxt
RETURN
END
CALL SEEK(f,0,'B')
SAY
saytxt='-' tpath||textfile '-'CR
SAY saytxt
DO i=1 WHILE ~EOF(f)
saytxt=COMPRESS(READLN(f),CR||'0C'x)||CR
SAY saytxt
IF i//(linesperpage-1)=0 & nonstop~=1 THEN
DO
CALL whodat()
/* OPTIONS PROMPT ' - ['pen3'N'def']on-stop ['pen3'Q'def']uit ['pen3'RETURN'def']=Continue - ' */
junk='N'
IF LEFT(UPPER(junk),1)='Q' THEN LEAVE i
IF LEFT(UPPER(junk),1)='N' THEN nonstop=1
/* IF colorflag=1 | ADDRESS()~='BAUD'THEN
saytxt='1B'x'M'||LEFT('',60)||'1B'x'M'||CR
SAY saytxt */
END
END
CALL CLOSE(f)
IF i//(linesperpage-1)>1 THEN
DO
OPTIONS PROMPT ' - ['pen3'RETURN'def']=Continue - '
PULL junk
END
nonstop=0
RETURN
whodat:
IF ADDRESS()~='BAUD' THEN RETURN
MSG RIGHT(' ',66-LENGTH(name)) '1B'x'M'||'
'||'
'||' 'name' level 'level' '||'
'
RETURN
help:
SAY
SAY
saytxt=pen3'- HELP -'def
SAY saytxt
SAY
saytxt='You can navigate through directory levels using the following commands.'CR
SAY saytxt
saytxt='Remember that the name must appear in the display before you can select it.'CR
SAY saytxt
saytxt='Filenames are displayed with their filesizes on the left, and directories'CR
SAY saytxt
saytxt='will have a' pen3'(dir)'def' on their left.'CR
SAY saytxt
SAY
saytxt='To select an item from the displayed list, enter its name as displayed.'CR
SAY saytxt
saytxt='If the selected item is a' pen3'directory'def', its contents will be displayed.'CR
SAY saytxt
saytxt='If the selected item is a file, it is added to the ''selected'' list.'CR
SAY saytxt
saytxt='To remove a selected file from the list, enter its name again.'CR
SAY saytxt
SAY
saytxt='To display the parent directory, enter an ''empty'' RETURN'CR
SAY saytxt
saytxt='To read a textfile or see the contents of an archive, enter' pen3'READ'def 'filename.'CR
SAY saytxt
saytxt='To select ALL items from the current display, including the contents of all'CR
SAY saytxt
saytxt='displayed directories and their sub-directories, enter 'pen3'SELECT ALL'def'.'CR
SAY saytxt
SAY
IF EXISTS('rexx:KingFisher.rexx') | EXISTS(bbspath'rexxDoors/KingFisher.rexx') THEN
DO
saytxt='Enter 'pen3'KINGFISHER'def' to use the online search utility.'CR
SAY saytxt
END
SAY
saytxt='Enter'pen3 'DONE' def'to return to the BBS (and download any selected files)'CR
SAY saytxt
SAY
RETURN
showtime:
mins=(maxtime-TIME('E'))%60
secs=TRUNC((maxtime-TIME('E'))//60)
IF secs<10 THEN secs='0'secs
RETURN 'Time Remaining: 'mins':'secs
BREAK_E:
SAY
saytxt=pen3'*** CONTROL-E BREAK ***'def||CR
SAY saytxt
i=999999
RETURN ''
BREAK_C:
SAY CR
EXIT ''
/* bbsExtDL.baud */